import axios from "axios";

const http = axios.create({
  baseURL: "/api", // 使用相对路径，通过Vite代理转发到后端
  timeout: 500000,
  headers: {
    'Content-Type': 'application/json',
  },
});

// 请求拦截器
http.interceptors.request.use(
  (config) => {
    console.log('发送请求:', config.method?.toUpperCase(), config.url);
    return config;
  },
  (error) => {
    console.error('请求错误:', error);
    return Promise.reject(error);
  }
);

// 响应拦截器
http.interceptors.response.use(
  (response) => {
    console.log('接收响应:', response.status, response.config.url);
    return response;
  },
  (error) => {
    console.error('响应错误:', error.message);

    if (error.response) {
      console.error('错误状态:', error.response.status);

      // 处理500错误的特殊情况
      if (error.response.status === 500) {
        console.error('🚨 后端服务器内部错误 (500)');

        // 检查是否是HTML错误页面（通常是Python错误）
        if (typeof error.response.data === 'string' && error.response.data.includes('<!doctype html>')) {
          console.error('检测到后端Python代码错误，请检查后端服务器日志');

          // 尝试提取错误信息
          const htmlContent = error.response.data;
          const errorMatch = htmlContent.match(/<h1>(.*?)<\/h1>/);
          const errorType = errorMatch ? errorMatch[1] : '未知错误';

          const detailMatch = htmlContent.match(/<p class="errormsg">(.*?)<\/p>/);
          const errorDetail = detailMatch ? detailMatch[1].replace(/&#34;/g, '"') : '无详细信息';

          console.error('Python错误类型:', errorType);
          console.error('Python错误详情:', errorDetail);

          // 创建更友好的错误信息
          const friendlyError = new Error(`后端服务器错误: ${ errorType }\n详情: ${ errorDetail }`);
          return Promise.reject(friendlyError);
        }
      }

      console.error('错误数据:', error.response.data);
    } else if (error.request) {
      console.error('请求错误:', error.request);
    }

    return Promise.reject(error);
  }
);

export default http;
